package com.moarea.app.service.inter;

import java.io.File;
import java.util.List;

/**
 * 文件处理接口
 * <p>
 * jizhong
 * <p>
 * 2017-09-20
 */
public interface IFileService {
    /**
     * 将文件从就地址保存到新地址
     * <p>
     * jizhong
     * <p>
     * 2017-09-20
     *
     * @param fileName 文件名称
     * @param oldPath  旧地址
     * @param newPath  新地址
     */
    boolean readFileToNewPath(String fileName, String oldPath, String newPath);

    /**
     * 根据文件路径删除文件
     *
     * @param filePath 文件路径（路径+文件名）
     * @return 删除是否成功
     */
    boolean deleteFileFromDisk(String filePath);

    /**
     * 将文件读成字符串
     * <p>
     * jizhong
     * <p>
     * 2017-10-10
     *
     * @param filePath 文件路径
     * @return 字符串
     */
    String readXmlToString(String filePath);


    /**
     * 压缩文件
     *
     * @param files   需要压缩的文件列表
     * @param zipFile 最终形成的压缩文件对象
     */
    void zipFiles(List<File> files, File zipFile);

    /**
     * 压缩成ZIP 方法1
     *
     * @param srcDir           压缩文件夹路径
     * @param zipFile          压缩文件保存的完整路径
     * @param KeepDirStructure 是否保留原来的目录结构,true:保留目录结构;
     *                         false:所有文件跑到压缩包根目录下(注意：不保留目录结构可能会出现同名文件,会压缩失败)
     * @throws RuntimeException 压缩失败会抛出运行时异常
     */
    void zip(String srcDir, String zipFile, boolean KeepDirStructure) throws RuntimeException;

    /**
     * 压缩成ZIP 方法2
     *
     * @param srcFiles 需要压缩的文件列表
     * @param zipFile  压缩文件保存路径
     * @throws RuntimeException 压缩失败会抛出运行时异常
     */
    void zip(List<File> srcFiles, String zipFile) throws RuntimeException;
}
